/*******
 * @description:数组分页
 * @author: 琴时
 * @param {page} [当前页：若不传->默认第1页(必须传整数，否则默认整数处理)]
 * @param {limit} [一页加载量:若不传->默认加载5条(必须传整数，否则默认整数处理)]
 * @param {arr} [操作数组：若不传->默认空数组]
 * @return {Object} [当前页、加载量、总页数、源数据总长度、分页后的数组]
 */
export const pagination = (page = 1, limit = 5, arr = []) => {
  page = parseInt(page)
  limit = parseInt(limit)
  if (page < 0 || page === 0) page = 1
  const startIndex = (page - 1) * limit //起始index
  const endIndex = startIndex + (limit - 1) //结束index
  const data = arr.filter(
    (_, index) => index >= startIndex && index <= endIndex
  ) //分页操作
  const total = Math.ceil(arr.length / limit) //总页数
  return {
    page: page > total ? total : page, //当前页
    limit, //加载量
    total, //总页数
    count: arr.length, //原数据总长度
    data, //分页数据
  }
}

/**
 * 测试用例
 * 将src/index.js底部执行函数:selectTest(params)的实参params改为 5
 * 直接无法测试，请使用npm run dev或者去掉 export 使用node运行当前界面测试即可
 */
const dataSource = [
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 3, name: '玄五' },
  { id: 4, name: '贼六' },
  { id: 5, name: '高老七' },
  { id: 6, name: '崴脚八' },
  { id: 7, name: '疯子九' },
  { id: 8, name: '不老十' },
]
console.log('测试数据分页->第一页:', pagination(1, 5, dataSource))
console.log('测试数据分页->第二页:', pagination(2, 5, dataSource))
console.log('测试数据分页->第三页:', pagination(3, 5, dataSource))
